﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace HttpModule
{
    public class Test : IHttpModule
    {
        #region HttpModule事件处理函数
        void Application_BeginRequest(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;
            HttpContext context = application.Context;
            HttpRequest request = application.Request;
            HttpResponse response = application.Response;
            if (request.Url.AbsoluteUri.EndsWith("Car/Index.shtml"))
            {
                application.CompleteRequest();
                application.Context.Response.Write("请求被终止。");
            }
            response.Write("我来自自定义HttpModule中的BeginRequest<br />");
        }
        void Application_EndRequest(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;
            HttpContext context = application.Context;
            HttpRequest request = application.Request;
            HttpResponse response = application.Response;
            response.Write("我来自自定义HttpModule中的EndRequest<br />");

        }
        void application_PreSendRequestContent(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_PreSendRequestContent<br/>");

        }
        void application_PreSendRequestHeaders(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_PreSendRequestHeaders<br/>");

        }
        void application_ResolveRequestCache(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_ResolveRequestCache<br/>");

        }
        void application_AuthorizeRequest(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_AuthorizeRequest<br/>");

        }
        void application_AuthenticateRequest(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_AuthenticateRequest<br/>");

        }
        void application_AcquireRequestState(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_AcquireRequestState<br/>");

        }
        void application_ReleaseRequestState(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_ReleaseRequestState<br/>");

        }
        void application_PostRequestHandlerExecute(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_PostRequestHandlerExecute<br/>");

        }
        void application_PreRequestHandlerExecute(object sender, EventArgs e)
        {

            HttpApplication application = (HttpApplication)sender;

            application.Context.Response.Write("application_PreRequestHandlerExecute<br/>");

        }
        #endregion

        #region IHttpModule 成员

        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication application)
        {
            application.BeginRequest += new EventHandler(Application_BeginRequest);

            application.EndRequest += new EventHandler(Application_EndRequest);

            application.PreRequestHandlerExecute += new EventHandler(application_PreRequestHandlerExecute);

            application.PostRequestHandlerExecute += new EventHandler(application_PostRequestHandlerExecute);

            application.ReleaseRequestState += new EventHandler(application_ReleaseRequestState);

            application.AcquireRequestState += new EventHandler(application_AcquireRequestState);

            application.AuthenticateRequest += new EventHandler(application_AuthenticateRequest);

            application.AuthorizeRequest += new EventHandler(application_AuthorizeRequest);

            application.ResolveRequestCache += new EventHandler(application_ResolveRequestCache);

            application.PreSendRequestHeaders += new EventHandler(application_PreSendRequestHeaders);

            application.PreSendRequestContent += new EventHandler(application_PreSendRequestContent);
        }

        #endregion
    }
}
